This invention relates generally to a method for encryption of a data stream, and to a crypto system. The invention relates further to a computer system, a data processing program, and a computer program product.
Encryption or ciphering of data streams is often a requirement in modern data transmission techniques throughout all available media, e.g., wire-based or wireless. Requirements for privacy as well as legal requirements make ciphering of data streams a field of growing importance. However, compromises may be required to balance costs of computing for the encryption on one hand, and the speed of available algorithms on the other hand.
Stream ciphers are often used in applications where plain text comes in quantities of unknowable length. But not only plain text files need encryption, but also streams of Voice-over-IP packets or video stream data do as well. In general, stream ciphering is required wherever data streams of unknown length play a role, as may also be the case in modern cloud computing environments.
A transport medium for ciphered data may be anything from a secure wireless connection, a local area network (LAN) or a wide area network (WLAN) between servers. The physical connection may be established using land-based systems or wireless systems.
Random number generators—or pseudo-random number generators—play a significant role in this field as they are often used as stream ciphers. Unfortunately, fast random number generators like LFSRs (linear feedback shift register random based number generators) or RC4 (known as Rivest Cipher or Ron's Code after the inventor Ron Rivest) are vulnerable to cryptographic attacks, while random number generators with low vulnerability to cryptographic attacks are relative slow. Typically, random number generators used for systems with high cryptographic strength require intensive computing like complex multiplications of long numbers. Examples are of comparably secure systems may be the method Blum-Blum-Shub algorithm or the VEST (Very Efficient Substitution Transposition) algorithm. In the following, the term pseudo-random number generator and the term random number generator will be used as synonyms. The same may apply for the pairs ciphering and encryption as well as for de-ciphering an decryption.
Several approaches have been followed in order to find a good balance between the speed of an algorithm for stream cipher and costs in form of required hardware capacities. Document U.S. Pat. No. 6,785,389 B1 discloses a bit-stream generator including a plurality of linear feed shift registers operative to generate a bit stream. At least a first linear feed shift register is operative, when assigned as a generator during a first time period including at least one clock cycle to provide an output bit in each clock cycle within a first time period. At least a second linear feed shift register is operative, when assigned as an assignor during the first time period, to provide in each clock cycle an output bit for determining assignments of at least some of the plurality of linear feed shift registers for a second time period following the first time period. However, only LFSRs may be used here which have a relative low cryptographic strength.
Document U.S. Pat. No. 7,082,453 B1 discloses a counter that takes advantage of the speed and implementation of LFSR counters by utilizing separate digit counters, each digit counter having a period that is a relative prime to the other digit counter periods. The total period will be the product of all the digit counter periods. Since all digits count independently, there is no carry structure between the digits and hence no delays incurred by carry chains. The pseudo-random number counting sequence for each digit still occurs but is ameliorated by the fact that the digital periods are small and can be converted to decimal equivalents by table-lookup and residue lookup.
Document JP06-342257 discloses that a ciphering part sets initial values to respective LFSRs at the head of a frame, exclusively ORs generated pseudo-random number data and normal data, and sends out cipher-text data. The cipher-text data is added to the stored value of the LFSRs by exclusive OR and the results are stored in the LFSRs again. A deciphering part sets secret initial values, used in common to the ciphering part, in the respective LFSRs at the head of the frame and exclusively ORed with received cipher-text data and the results are stored in the LFSRs again. The same pseudo-random number data with the side of the ciphering part are generated. The received cipher-text and pseudo-random number data are exclusively ORed to obtain cipher-text data.